This is an overview of how THE SERVANT uses the C128 memory. This may serve as a help to avoid conflicts with other applications or to understand why conflicts might occur.
When you don't actually see THE SERVANT on screen, your computer is completely "stock", except for colors & function keys. THE SERVANT does not hook into your computer's operating system in any way whatsoever, unlike cartridges for example. This is the key to THE SERVANT high level of compatibility. The trade off is the lack of some features like a fast loader, DOS wedge and additional BASIC commands.
ZERO PAGE:
The zero page is used heavily, but on a non-interference basis. That is, THE SERVANT uses locations which are normally changed by BASIC under normal circumstances. Utilities or "wedges" should not suffer under THE SERVANTs use of the zero page. One exception however, is the Datamaker. Since this utility utilizes the BASIC screen editor, it has to use some memory locations not used by BASIC. Most notably this applies to locations 251 through 255 ($fb - $ff).
STACK:
THE SERVANT assumes the use of the upper half of the stack. This means that addresses 384 to 507 ($0180 - $01fb) is used. Memory conflicts are avoided because THE SERVANT resets the stack pointer whenever it is invoked.
INPUT BUFFER:
The input buffer at 512 to 672 ($0200 - $02a0) is used heavily for various storage. Since this area is used by BASIC as input buffer, and thereby frequently corrupted, no conflicts should occur. Again the memory is used temporarily on a non-interference basis.
VECTORS:
THE SERVANT changes no pointers or vectors except one. The KEYCHK vector (828/$033C) is changed temporarily to disable the function keys. But it is gracefully set back to it's original value before The Servant is exited.
BASIC RUNTIME STACK:
BASIC reserves a 512 byte area in the range 2048 to 2559 ($0800 - $09ff) as a stack to process commands like FOR-NEXT, DO-LOOP, GOSUB etc. In the Disk Tools section, THE SERVANT uses this area as two buffers. The first 256 bytes is used as a general purpose working buffer, while the upper 512 bytes is used to hold the directory path for 1581 disk drives. The directory path is used when using the file copier with one and the same 1581 disk drive. Since this area is normally used by BASIC, no conflicts should occur.
APPLICATION PROGRAM AREA AND BASIC PROGRAM AREA (Bank 0):
The Disk Copier and File Copier use the entire bank 0 from 4864 ($1300) and up as part of its main data buffer. Otherwise THE SERVANT don't touch this area. The exceptions from this rule are obvious: If you load a BASIC program for example, it will of course replace any BASIC program which happened to be in the memory already. IMPORTANT NOTE: When THE SERVANT is working in bank 0 RAM, bank 0 memory will also be used by the Disk Tools for storing directories (see below).
BASIC VARIABLE STORAGE AREA (bank 1):
All Disk Tools sections which uses a directory, use bank 1 memory from 16384 ($4000) and up to 32768 ($8000) according to the directory size. The File Copier and Disk Copier uses the entire bank 1 as buffer space. It is not possible to protect memory from being overwritten by THE SERVANT.
BANK 0/1 COMMON MEMORY:
The 128 hardware has a provision for reserving a memory area common to bank 0 and 1 at the top, bottom or in both ends of the memory range. Under normal operation, the 128 is set up using a 1k common memory area at the bottom of memory. The Disk Tools section temporarily extends the bottom common area to 16k to retain compatibility with RAMDOS. The common area is set back to 1k upon exit.
VDC MEMORY:
If your 128 is equipped with 64K memory for the 80 column chip, the entire memory space is used by the Disk Copier and File copier. Only the area used for screen display, attribute memory, and the lowercase character definitions are unused to retain the screen display even if the 80 column screen is active. This way, THE SERVANT can squeeze 56K out of the VDC memory. Because the uppercase/graphics characters are overwritten, the ROM character definitions are copied back to the 80 column memory upon exit.
RAM EXPANSION UNIT:
The Disk Copier and File Copier can make use of any size REU. Please note however, THE SERVANT won't identify any REU to be bigger than 1Mb, even if your REU does have more memory onboard. Since duplicating 1581 disks is the most memory hungry job you're ever going to do within THE SERVANT, this limitation won't hamper you. Also, using the REU is purely optional; there's no need to corrupt the REU's contents if you don't want to.